/**
 * 文件描述如下：
 * 1. 对设备监控的信息进行处理
 * 2.
 * 3.
 * 4.
 */

export const stepName = {
  0: '相机曝光时间戳',
  1: '数据到机时间戳',
  2: '匹配开始时间戳',
  3: '检测开始时间戳',
  4: '检测完成时间戳',
  5: 'pipeline匹配开始时间戳',
  6: 'pipeline匹配结束时间戳',
  7: '单杆融合跟踪开始时间戳',
  8: '单杆融合跟踪结束时间戳',
  9: '融合跟踪开始时间戳',
  10: '融合跟踪结束时间戳',
  11: '事件-多杆融合结果输入时间戳',
  12: '事件-信号灯数据输入时间戳',
  13: '事件-算法开始时间戳',
  14: '事件-B3结果输出时间戳',
  15: '事件-B4结果输出时间戳',
  16: '事件-B5结果输出时间戳',
  17: '事件-web结果输出时间戳',
  99: '合计',
}

const map = new Map() //通过map去重 并保留最新的数据
let vecChannelStatusArr = []

export const dataPro_com = (params) => {
  // console.log(params);

  // 修改成用map对数据进行加工 保证数据的顺序
  const item = params['header']
  map.set(item.name, item) // 每次都会覆盖旧的，保留最新的
  const header = [...map.values()]

  // mapFps
  const mapFps = params['map-fps']
  params['map-fps']?.forEach((item) => {})

  // vec-channel-status
  if (params['vec-channel-status']) {
    if (vecChannelStatusArr.length >= 100000) vecChannelStatusArr = []
    vecChannelStatusArr.push(...params['vec-channel-status'])
  }

  const vecChannelStatus = Array.from(new Map(vecChannelStatusArr.map((item) => [item.name, item])).values())

  return { header, mapFps, vecChannelStatus }
}

export const dataPro_com2 = (params) => {
  const arrSort = params.sort((a, b) => a.step - b.step)

  // 2. 计算 timestamp 差值
  const result = arrSort.map((item, index) => ({
    ...item,
    diff: index === 0 ? '-' : item.timestamp - arrSort[index - 1].timestamp,
  }))

  const totalDiff = result[result.length - 1].timestamp - result[0].timestamp
  result.push({ step: 99, timestamp: result[result.length - 1].timestamp, diff: totalDiff })

  const mapTimestamp = result

  return { mapTimestamp }
}
